{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-core-event",
      "artifactVersion": "2021.62.7",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.core",
          "org.nuxeo.ecm.core.api",
          "org.nuxeo.ecm.core.bulk",
          "org.nuxeo.ecm.core.cache",
          "org.nuxeo.ecm.core.event",
          "org.nuxeo.ecm.core.io",
          "org.nuxeo.ecm.core.mimetype",
          "org.nuxeo.ecm.core.mongodb",
          "org.nuxeo.ecm.core.persistence",
          "org.nuxeo.ecm.core.query",
          "org.nuxeo.ecm.core.redis",
          "org.nuxeo.ecm.core.schema",
          "org.nuxeo.ecm.platform.el"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.core",
        "id": "grp:org.nuxeo.ecm.core",
        "name": "org.nuxeo.ecm.core",
        "parentIds": [],
        "readmes": [],
        "version": "2021.62"
      },
      "bundleId": "org.nuxeo.ecm.core.event",
      "components": [
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.core.event.EventServiceComponent",
          "declaredStartOrder": -500,
          "documentation": "\n    Event service\n  \n",
          "documentationHtml": "<p>\nEvent service\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "descriptors": [
                "org.nuxeo.ecm.core.event.impl.EventListenerDescriptor"
              ],
              "documentation": "\n      Extension point defining event listeners.\n\n      An event listener describes some Java code that can be executed\n      synchronously or asynchronously when an event is fired by Nuxeo code.\n\n      Example listener:\n      <code>\n    <listener async=\"false\"\n        class=\"org.nuxeo.ecm.platform.dublincore.listener.DublinCoreListener\"\n        enabled=\"true\" name=\"mylistener\" postCommit=\"false\"\n        priority=\"50\" retryCount=\"1\">\n        <event>documentCreated</event>\n        <event>documentModified</event>\n    </listener>\n</code>\n\n\n      The events listed are those for which the listener will be called.\n      If there are none, the listener is called for all events, but this is strongly\n      discouraged for performance reasons.\n\n      Listeners belong to one of three categories:\n\n      If postCommit=false then the listener is purely synchronous\n      (also called \"inline\") and executed in the same thread and transaction\n      as the code firing the event, as a regular method call.\n      The class must implement org.nuxeo.ecm.core.event.EventListener,\n      which receives events one at a time.\n\n      If postCommit=true and async=true then the listener is purely\n      asynchronous and executed at an arbitrary later point in time\n      (but after the original transaction is committed), in its own thread and transaction.\n      It may be retried if a ConcurrentUpdateException is detected.\n      The listener is executed asynchronously by the WorkManager via a Work instance\n      whose category (which determines the Work queue used) is the listener's name.\n      The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\n      which receives a bundle of all the events raised by the original transaction.\n\n      If postCommit=true and async=false then the listener is executed synchronously\n      immediately after the original transaction is committed, but in a separate transaction.\n      It is not executed if the original transaction does a rollback.\n      All listeners in this category are executed one after the other (in priority order),\n      and only after they are all done does the main thread continue execution.\n      (However if one of the listeners takes too long it is left to run purely asynchronously\n      and the other listeners in this category are processed.)\n      The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\n      which receives a bundle of all the events raised by the original transaction.\n\n      The priority gives a global ordering of all the listeners\n      in the same category executed for a given event.\n      The default is 0.\n\n      The retryCount specifies how many times a purely asynchronous listener\n      may retry execution if it resulted in a ConcurrentUpdateException.\n      The default is 1.\n    \n",
              "documentationHtml": "<p>\nExtension point defining event listeners.\n</p><p>\nAn event listener describes some Java code that can be executed\nsynchronously or asynchronously when an event is fired by Nuxeo code.\n</p><p>\nExample listener:\n</p><p></p><pre><code>    &lt;listener async&#61;&#34;false&#34;\n        class&#61;&#34;org.nuxeo.ecm.platform.dublincore.listener.DublinCoreListener&#34;\n        enabled&#61;&#34;true&#34; name&#61;&#34;mylistener&#34; postCommit&#61;&#34;false&#34;\n        priority&#61;&#34;50&#34; retryCount&#61;&#34;1&#34;&gt;\n        &lt;event&gt;documentCreated&lt;/event&gt;\n        &lt;event&gt;documentModified&lt;/event&gt;\n    &lt;/listener&gt;\n</code></pre><p>\nThe events listed are those for which the listener will be called.\nIf there are none, the listener is called for all events, but this is strongly\ndiscouraged for performance reasons.\n</p><p>\nListeners belong to one of three categories:\n</p><p>\nIf postCommit&#61;false then the listener is purely synchronous\n(also called &#34;inline&#34;) and executed in the same thread and transaction\nas the code firing the event, as a regular method call.\nThe class must implement org.nuxeo.ecm.core.event.EventListener,\nwhich receives events one at a time.\n</p><p>\nIf postCommit&#61;true and async&#61;true then the listener is purely\nasynchronous and executed at an arbitrary later point in time\n(but after the original transaction is committed), in its own thread and transaction.\nIt may be retried if a ConcurrentUpdateException is detected.\nThe listener is executed asynchronously by the WorkManager via a Work instance\nwhose category (which determines the Work queue used) is the listener&#39;s name.\nThe class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\nwhich receives a bundle of all the events raised by the original transaction.\n</p><p>\nIf postCommit&#61;true and async&#61;false then the listener is executed synchronously\nimmediately after the original transaction is committed, but in a separate transaction.\nIt is not executed if the original transaction does a rollback.\nAll listeners in this category are executed one after the other (in priority order),\nand only after they are all done does the main thread continue execution.\n(However if one of the listeners takes too long it is left to run purely asynchronously\nand the other listeners in this category are processed.)\nThe class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\nwhich receives a bundle of all the events raised by the original transaction.\n</p><p>\nThe priority gives a global ordering of all the listeners\nin the same category executed for a given event.\nThe default is 0.\n</p><p>\nThe retryCount specifies how many times a purely asynchronous listener\nmay retry execution if it resulted in a ConcurrentUpdateException.\nThe default is 1.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/ExtensionPoints/org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "id": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "label": "listener (org.nuxeo.ecm.core.event.EventServiceComponent)",
              "name": "listener",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "descriptors": [
                "org.nuxeo.ecm.core.event.pipe.EventPipeDescriptor"
              ],
              "documentation": "\n      Extension point to contribute event pipe.\n\n      An event pipe is a where Nuxeo events will be sent for asynchronous processing.\n\n      Example pipe definition:\n      <code>\n    <eventPipe class=\"org.nuxeo.ecm.core.event.pipe.DummyPipe\"\n        name=\"dummyPipe1\" priority=\"0\">\n        <parameters>\n            <parameter name=\"foo\">bar</parameter>\n        </parameters>\n    </eventPipe>\n</code>\n",
              "documentationHtml": "<p>\nExtension point to contribute event pipe.\n</p><p>\nAn event pipe is a where Nuxeo events will be sent for asynchronous processing.\n</p><p>\nExample pipe definition:\n</p><p></p><pre><code>    &lt;eventPipe class&#61;&#34;org.nuxeo.ecm.core.event.pipe.DummyPipe&#34;\n        name&#61;&#34;dummyPipe1&#34; priority&#61;&#34;0&#34;&gt;\n        &lt;parameters&gt;\n            &lt;parameter name&#61;&#34;foo&#34;&gt;bar&lt;/parameter&gt;\n        &lt;/parameters&gt;\n    &lt;/eventPipe&gt;\n</code></pre><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/ExtensionPoints/org.nuxeo.ecm.core.event.EventServiceComponent--pipe",
              "id": "org.nuxeo.ecm.core.event.EventServiceComponent--pipe",
              "label": "pipe (org.nuxeo.ecm.core.event.EventServiceComponent)",
              "name": "pipe",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "descriptors": [
                "org.nuxeo.ecm.core.event.pipe.dispatch.EventDispatcherDescriptor"
              ],
              "documentation": "\n      Extension point to define the dispatcher used to dispatch event between pipes.\n\n      Example dispatcher definition:\n      <code>\n    <eventDispatcher\n        class=\"org.nuxeo.ecm.core.event.pipe.dispatch.SimpleEventBundlePipeDispatcher\" name=\"dispatcher\">\n        <parameters>\n            <parameter name=\"foo\">bar</parameter>\n        </parameters>\n    </eventDispatcher>\n</code>\n",
              "documentationHtml": "<p>\nExtension point to define the dispatcher used to dispatch event between pipes.\n</p><p>\nExample dispatcher definition:\n</p><p></p><pre><code>    &lt;eventDispatcher\n        class&#61;&#34;org.nuxeo.ecm.core.event.pipe.dispatch.SimpleEventBundlePipeDispatcher&#34; name&#61;&#34;dispatcher&#34;&gt;\n        &lt;parameters&gt;\n            &lt;parameter name&#61;&#34;foo&#34;&gt;bar&lt;/parameter&gt;\n        &lt;/parameters&gt;\n    &lt;/eventDispatcher&gt;\n</code></pre><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/ExtensionPoints/org.nuxeo.ecm.core.event.EventServiceComponent--dispatcher",
              "id": "org.nuxeo.ecm.core.event.EventServiceComponent--dispatcher",
              "label": "dispatcher (org.nuxeo.ecm.core.event.EventServiceComponent)",
              "name": "dispatcher",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "descriptors": [
                "org.nuxeo.ecm.core.event.stream.DomainEventProducerDescriptor"
              ],
              "documentation": "\n      Extension point to define Stream Domain Event Producers.\n    \n",
              "documentationHtml": "<p>\nExtension point to define Stream Domain Event Producers.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/ExtensionPoints/org.nuxeo.ecm.core.event.EventServiceComponent--domainEventProducer",
              "id": "org.nuxeo.ecm.core.event.EventServiceComponent--domainEventProducer",
              "label": "domainEventProducer (org.nuxeo.ecm.core.event.EventServiceComponent)",
              "name": "domainEventProducer",
              "version": "2021.62.7"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/Contributions/org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "id": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n    <listener async=\"false\" class=\"org.nuxeo.ecm.core.event.stream.DomainEventProducerListener\" name=\"domainEventListener\" priority=\"500\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent",
          "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
          "requirements": [],
          "resolutionOrder": 144,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/Services/org.nuxeo.ecm.core.event.EventService",
              "id": "org.nuxeo.ecm.core.event.EventService",
              "overriden": false,
              "version": "2021.62.7"
            },
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/Services/org.nuxeo.ecm.core.event.EventProducer",
              "id": "org.nuxeo.ecm.core.event.EventProducer",
              "overriden": false,
              "version": "2021.62.7"
            },
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.core.event.EventServiceComponent",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.event.EventServiceComponent/Services/org.nuxeo.ecm.core.event.EventServiceAdmin",
              "id": "org.nuxeo.ecm.core.event.EventServiceAdmin",
              "overriden": false,
              "version": "2021.62.7"
            }
          ],
          "startOrder": 11,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.core.event.EventServiceComponent\" version=\"1.0\">\n  <documentation>\n    Event service\n  </documentation>\n\n  <implementation class=\"org.nuxeo.ecm.core.event.EventServiceComponent\"/>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.core.event.EventService\"/>\n    <provide interface=\"org.nuxeo.ecm.core.event.EventProducer\"/>\n    <provide interface=\"org.nuxeo.ecm.core.event.EventServiceAdmin\"/>\n  </service>\n\n  <extension-point name=\"listener\">\n    <documentation>\n      Extension point defining event listeners.\n\n      An event listener describes some Java code that can be executed\n      synchronously or asynchronously when an event is fired by Nuxeo code.\n\n      Example listener:\n      <code>\n        <listener name=\"mylistener\" enabled=\"true\"\n            postCommit=\"false\" async=\"false\"\n            class=\"org.nuxeo.ecm.platform.dublincore.listener.DublinCoreListener\"\n            priority=\"50\" retryCount=\"1\">\n          <event>documentCreated</event>\n          <event>documentModified</event>\n        </listener>\n      </code>\n\n      The events listed are those for which the listener will be called.\n      If there are none, the listener is called for all events, but this is strongly\n      discouraged for performance reasons.\n\n      Listeners belong to one of three categories:\n\n      If postCommit=false then the listener is purely synchronous\n      (also called \"inline\") and executed in the same thread and transaction\n      as the code firing the event, as a regular method call.\n      The class must implement org.nuxeo.ecm.core.event.EventListener,\n      which receives events one at a time.\n\n      If postCommit=true and async=true then the listener is purely\n      asynchronous and executed at an arbitrary later point in time\n      (but after the original transaction is committed), in its own thread and transaction.\n      It may be retried if a ConcurrentUpdateException is detected.\n      The listener is executed asynchronously by the WorkManager via a Work instance\n      whose category (which determines the Work queue used) is the listener's name.\n      The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\n      which receives a bundle of all the events raised by the original transaction.\n\n      If postCommit=true and async=false then the listener is executed synchronously\n      immediately after the original transaction is committed, but in a separate transaction.\n      It is not executed if the original transaction does a rollback.\n      All listeners in this category are executed one after the other (in priority order),\n      and only after they are all done does the main thread continue execution.\n      (However if one of the listeners takes too long it is left to run purely asynchronously\n      and the other listeners in this category are processed.)\n      The class must implement org.nuxeo.ecm.core.event.PostCommitEventListener,\n      which receives a bundle of all the events raised by the original transaction.\n\n      The priority gives a global ordering of all the listeners\n      in the same category executed for a given event.\n      The default is 0.\n\n      The retryCount specifies how many times a purely asynchronous listener\n      may retry execution if it resulted in a ConcurrentUpdateException.\n      The default is 1.\n    </documentation>\n    <object class=\"org.nuxeo.ecm.core.event.impl.EventListenerDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"pipe\">\n    <documentation>\n      Extension point to contribute event pipe.\n\n      An event pipe is a where Nuxeo events will be sent for asynchronous processing.\n\n      Example pipe definition:\n      <code>\n        <eventPipe name=\"dummyPipe1\" class=\"org.nuxeo.ecm.core.event.pipe.DummyPipe\" priority=\"0\">\n\t      <parameters>\n\t        <parameter name=\"foo\">bar</parameter>\n\t      </parameters>\n\t    </eventPipe>\n      </code>\n    </documentation>\n    <object class=\"org.nuxeo.ecm.core.event.pipe.EventPipeDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"dispatcher\">\n    <documentation>\n      Extension point to define the dispatcher used to dispatch event between pipes.\n\n      Example dispatcher definition:\n      <code>\n        <eventDispatcher name=\"dispatcher\"\n                         class=\"org.nuxeo.ecm.core.event.pipe.dispatch.SimpleEventBundlePipeDispatcher\">\n           <parameters>\n             <parameter name=\"foo\">bar</parameter>\n           </parameters>\n        </eventDispatcher>\n      </code>\n    </documentation>\n    <object class=\"org.nuxeo.ecm.core.event.pipe.dispatch.EventDispatcherDescriptor\"/>\n  </extension-point>\n\n  <extension-point name=\"domainEventProducer\">\n    <documentation>\n      Extension point to define Stream Domain Event Producers.\n    </documentation>\n    <object class=\"org.nuxeo.ecm.core.event.stream.DomainEventProducerDescriptor\"/>\n  </extension-point>\n\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\" point=\"listener\">\n    <listener name=\"domainEventListener\" async=\"false\" priority=\"500\"\n      class=\"org.nuxeo.ecm.core.event.stream.DomainEventProducerListener\"/>\n  </extension>\n\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/EventService.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.core.work.WorkManagerImpl",
          "declaredStartOrder": -501,
          "documentation": "\n    The WorkManager executes Work instances asynchronously.\n  \n",
          "documentationHtml": "<p>\nThe WorkManager executes Work instances asynchronously.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.work.service",
              "descriptors": [
                "org.nuxeo.ecm.core.work.api.WorkQueueDescriptor"
              ],
              "documentation": "\n      Defines the characteristics of work queues:\n      <code>\n    <queue id=\"myqueue\">\n        <name>My Queue</name>\n        <maxThreads>4</maxThreads>\n        <capacity>100</capacity>\n        <clearCompletedAfterSeconds>300</clearCompletedAfterSeconds>\n        <category>somecategory1</category>\n        <category>somecategory2</category>\n    </queue>\n</code>\n\n      - id is the queue id.\n\n      - name is the human-readable name.\n\n      - maxThreads maximum number of worker threads (default 4).\n\n      - capacity when specified make the queue bounded, the scheduling of\n      new work is blocking when the queue is full (default unlimited).\n\n      - clearCompletedAfterSeconds (default 3600) is the delay after which completed work\n       may be automatically cleared from its queue. 0 means never.\n\n      - category is a list of Work categories that this queue will receive.\n      For event listeners work, the category is the listener name (or its simple class name).\n    \n",
              "documentationHtml": "<p>\nDefines the characteristics of work queues:\n</p><p></p><pre><code>    &lt;queue id&#61;&#34;myqueue&#34;&gt;\n        &lt;name&gt;My Queue&lt;/name&gt;\n        &lt;maxThreads&gt;4&lt;/maxThreads&gt;\n        &lt;capacity&gt;100&lt;/capacity&gt;\n        &lt;clearCompletedAfterSeconds&gt;300&lt;/clearCompletedAfterSeconds&gt;\n        &lt;category&gt;somecategory1&lt;/category&gt;\n        &lt;category&gt;somecategory2&lt;/category&gt;\n    &lt;/queue&gt;\n</code></pre><p>\n- id is the queue id.\n</p><p>\n- name is the human-readable name.\n</p><p>\n- maxThreads maximum number of worker threads (default 4).\n</p><p>\n- capacity when specified make the queue bounded, the scheduling of\nnew work is blocking when the queue is full (default unlimited).\n</p><p>\n- clearCompletedAfterSeconds (default 3600) is the delay after which completed work\nmay be automatically cleared from its queue. 0 means never.\n</p><p>\n- category is a list of Work categories that this queue will receive.\nFor event listeners work, the category is the listener name (or its simple class name).\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.service/ExtensionPoints/org.nuxeo.ecm.core.work.service--queues",
              "id": "org.nuxeo.ecm.core.work.service--queues",
              "label": "queues (org.nuxeo.ecm.core.work.service)",
              "name": "queues",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.core.work.service",
              "descriptors": [
                "org.nuxeo.ecm.core.work.api.WorkQueuingDescriptor"
              ],
              "documentation": "\n      Defines the implementation of the queuing mechanism:\n      <code>\n    <queuing class=\"org.nuxeo.ecm.core.redis.contribs.RedisWorkQueuing\"/>\n</code>\n\n      The class must be a subclass of org.nuxeo.ecm.core.work.WorkQueuing.\n    \n",
              "documentationHtml": "<p>\nDefines the implementation of the queuing mechanism:\n</p><p></p><pre><code>    &lt;queuing class&#61;&#34;org.nuxeo.ecm.core.redis.contribs.RedisWorkQueuing&#34;/&gt;\n</code></pre><p>\nThe class must be a subclass of org.nuxeo.ecm.core.work.WorkQueuing.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.service/ExtensionPoints/org.nuxeo.ecm.core.work.service--implementation",
              "id": "org.nuxeo.ecm.core.work.service--implementation",
              "label": "implementation (org.nuxeo.ecm.core.work.service)",
              "name": "implementation",
              "version": "2021.62.7"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.service",
          "name": "org.nuxeo.ecm.core.work.service",
          "requirements": [],
          "resolutionOrder": 145,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.core.work.service",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.service/Services/org.nuxeo.ecm.core.work.api.WorkManager",
              "id": "org.nuxeo.ecm.core.work.api.WorkManager",
              "overriden": false,
              "version": "2021.62.7"
            }
          ],
          "startOrder": 10,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.core.work.service\" version=\"1.0\">\n\n  <documentation>\n    The WorkManager executes Work instances asynchronously.\n  </documentation>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.core.work.api.WorkManager\" />\n  </service>\n\n  <implementation class=\"org.nuxeo.ecm.core.work.WorkManagerImpl\" />\n\n  <extension-point name=\"queues\">\n    <documentation>\n      Defines the characteristics of work queues:\n      <code>\n        <queue id=\"myqueue\">\n          <name>My Queue</name>\n          <maxThreads>4</maxThreads>\n          <capacity>100</capacity>\n          <clearCompletedAfterSeconds>300</clearCompletedAfterSeconds>\n          <category>somecategory1</category>\n          <category>somecategory2</category>\n        </queue>\n      </code>\n      - id is the queue id.\n\n      - name is the human-readable name.\n\n      - maxThreads maximum number of worker threads (default 4).\n\n      - capacity when specified make the queue bounded, the scheduling of\n      new work is blocking when the queue is full (default unlimited).\n\n      - clearCompletedAfterSeconds (default 3600) is the delay after which completed work\n       may be automatically cleared from its queue. 0 means never.\n\n      - category is a list of Work categories that this queue will receive.\n      For event listeners work, the category is the listener name (or its simple class name).\n    </documentation>\n\n    <object class=\"org.nuxeo.ecm.core.work.api.WorkQueueDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"implementation\">\n    <documentation>\n      Defines the implementation of the queuing mechanism:\n      <code>\n        <queuing class=\"org.nuxeo.ecm.core.redis.contribs.RedisWorkQueuing\"/>\n      </code>\n      The class must be a subclass of org.nuxeo.ecm.core.work.WorkQueuing.\n    </documentation>\n\n    <object class=\"org.nuxeo.ecm.core.work.api.WorkQueuingDescriptor\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/workmanager-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    The default queue configuration for the work manager,\n    the scheduled job to cleanup the completed work instances,\n    and the related listener.\n  \n",
          "documentationHtml": "<p>\nThe default queue configuration for the work manager,\nthe scheduled job to cleanup the completed work instances,\nand the related listener.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.work.service--implementation",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.config/Contributions/org.nuxeo.ecm.core.work.config--implementation",
              "id": "org.nuxeo.ecm.core.work.config--implementation",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.work.service",
                "name": "org.nuxeo.ecm.core.work.service",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"implementation\" target=\"org.nuxeo.ecm.core.work.service\">\n    <queuing class=\"org.nuxeo.ecm.core.work.MemoryWorkQueuing\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.work.service--queues",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.config/Contributions/org.nuxeo.ecm.core.work.config--queues",
              "id": "org.nuxeo.ecm.core.work.config--queues",
              "registrationOrder": 5,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.work.service",
                "name": "org.nuxeo.ecm.core.work.service",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"queues\" target=\"org.nuxeo.ecm.core.work.service\">\n    <queue id=\"default\">\n      <name>Default queue</name>\n      <maxThreads>4</maxThreads>\n      <!-- clear completed work instances older than 10 minutes -->\n      <clearCompletedAfterSeconds>600</clearCompletedAfterSeconds>\n    </queue>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.work.config",
          "name": "org.nuxeo.ecm.core.work.config",
          "requirements": [],
          "resolutionOrder": 146,
          "services": [],
          "startOrder": 182,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.core.work.config\" version=\"1.0\">\n\n  <documentation>\n    The default queue configuration for the work manager,\n    the scheduled job to cleanup the completed work instances,\n    and the related listener.\n  </documentation>\n\n  <extension target=\"org.nuxeo.ecm.core.work.service\" point=\"implementation\">\n    <queuing class=\"org.nuxeo.ecm.core.work.MemoryWorkQueuing\"/>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.work.service\" point=\"queues\">\n    <queue id=\"default\">\n      <name>Default queue</name>\n      <maxThreads>4</maxThreads>\n      <!-- clear completed work instances older than 10 minutes -->\n      <clearCompletedAfterSeconds>600</clearCompletedAfterSeconds>\n    </queue>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/workmanager-config.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "aliases": [
            "org.nuxeo.ecm.platform.scheduler.core.service.SchedulerRegistryService"
          ],
          "componentClass": "org.nuxeo.ecm.core.scheduler.SchedulerServiceImpl",
          "documentation": "\n     Core scheduler registry service.\n  \n",
          "documentationHtml": "<p>\nCore scheduler registry service.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "aliases": [
                "org.nuxeo.ecm.platform.scheduler.core.service.SchedulerRegistryService--schedule"
              ],
              "componentId": "org.nuxeo.ecm.core.scheduler.SchedulerService",
              "descriptors": [
                "org.nuxeo.ecm.core.scheduler.ScheduleImpl"
              ],
              "documentation": "\n      Extension allowing the registration of schedules.\n      This is similar to a cron job sending events. Note that\n      contrary to UNIX cron there is an additional \"seconds\" field\n      in the cron expression.\n      <p/>\n\n      A scheduler definition contains information about what event is sent,\n      when, and under what identity.\n      <p/>\n\n      For instance :\n      <code>\n    <schedule id=\"mySchedule\" jobFactoryClass=\"org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory\">\n        <username>Administrator</username>\n        <event>myEvent</event>\n        <eventCategory>default</eventCategory>\n        <!-- Every first of the month at 3am -->\n        <cronExpression>0 0 3 1 * ?</cronExpression>\n        <timezone>UTC</timezone>\n    </schedule>\n</code>\n\n      jobFactoryClass is optional and defaults to org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory.\n      timezone is optional and defaults to system default.\n\n      @see org.quartz.CronTrigger\n      @see org.nuxeo.ecm.core.scheduler.EventJobFactory\n      @see http://www.quartz-scheduler.org/docs/api/1.8.1/org/quartz/CronExpression.html\n      @see http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html\n    \n",
              "documentationHtml": "<p>\nExtension allowing the registration of schedules.\nThis is similar to a cron job sending events. Note that\ncontrary to UNIX cron there is an additional &#34;seconds&#34; field\nin the cron expression.\n</p><p>\nA scheduler definition contains information about what event is sent,\nwhen, and under what identity.\n</p><p>\nFor instance :\n</p><p></p><pre><code>    &lt;schedule id&#61;&#34;mySchedule&#34; jobFactoryClass&#61;&#34;org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory&#34;&gt;\n        &lt;username&gt;Administrator&lt;/username&gt;\n        &lt;event&gt;myEvent&lt;/event&gt;\n        &lt;eventCategory&gt;default&lt;/eventCategory&gt;\n        &lt;!-- Every first of the month at 3am --&gt;\n        &lt;cronExpression&gt;0 0 3 1 * ?&lt;/cronExpression&gt;\n        &lt;timezone&gt;UTC&lt;/timezone&gt;\n    &lt;/schedule&gt;\n</code></pre><p>\njobFactoryClass is optional and defaults to org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory.\ntimezone is optional and defaults to system default.\n</p><p>\n&#64;see org.quartz.CronTrigger\n&#64;see org.nuxeo.ecm.core.scheduler.EventJobFactory\n&#64;see http://www.quartz-scheduler.org/docs/api/1.8.1/org/quartz/CronExpression.html\n&#64;see http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.scheduler.SchedulerService/ExtensionPoints/org.nuxeo.ecm.core.scheduler.SchedulerService--schedule",
              "id": "org.nuxeo.ecm.core.scheduler.SchedulerService--schedule",
              "label": "schedule (org.nuxeo.ecm.core.scheduler.SchedulerService)",
              "name": "schedule",
              "version": "2021.62.7"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Delay Quartz scheduler start to avoid unique key constraint violation with qrtz_LOCKS table\n      <p/>\n\n      Default behavior is to delay for 5 seconds.\n\n      @since 2021.19\n    \n",
              "documentationHtml": "<p>\nDelay Quartz scheduler start to avoid unique key constraint violation with qrtz_LOCKS table\n</p><p>\nDefault behavior is to delay for 5 seconds.\n</p><p>\n&#64;since 2021.19\n</p><p></p>",
              "extensionPoint": "org.nuxeo.runtime.ConfigurationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.scheduler.SchedulerService/Contributions/org.nuxeo.ecm.core.scheduler.SchedulerService--configuration",
              "id": "org.nuxeo.ecm.core.scheduler.SchedulerService--configuration",
              "registrationOrder": 63,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.ConfigurationService",
                "name": "org.nuxeo.runtime.ConfigurationService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.ConfigurationService\">\n    <documentation>\n      Delay Quartz scheduler start to avoid unique key constraint violation with qrtz_LOCKS table\n      <p/>\n      Default behavior is to delay for 5 seconds.\n\n      @since 2021.19\n    </documentation>\n    <property name=\"org.nuxeo.scheduler.start.delay\">5s</property>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.scheduler.SchedulerService",
          "name": "org.nuxeo.ecm.core.scheduler.SchedulerService",
          "requirements": [
            "org.nuxeo.runtime.cluster.ClusterService"
          ],
          "resolutionOrder": 807,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.core.scheduler.SchedulerService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event/org.nuxeo.ecm.core.scheduler.SchedulerService/Services/org.nuxeo.ecm.core.scheduler.SchedulerService",
              "id": "org.nuxeo.ecm.core.scheduler.SchedulerService",
              "overriden": false,
              "version": "2021.62.7"
            }
          ],
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.core.scheduler.SchedulerService\">\n  <alias>org.nuxeo.ecm.platform.scheduler.core.service.SchedulerRegistryService</alias>\n\n  <require>org.nuxeo.runtime.cluster.ClusterService</require>\n\n  <documentation>\n     Core scheduler registry service.\n  </documentation>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.core.scheduler.SchedulerService\" />\n  </service>\n\n  <implementation class=\"org.nuxeo.ecm.core.scheduler.SchedulerServiceImpl\" />\n\n  <extension-point name=\"schedule\">\n\n    <documentation>\n      Extension allowing the registration of schedules.\n      This is similar to a cron job sending events. Note that\n      contrary to UNIX cron there is an additional \"seconds\" field\n      in the cron expression.\n      <p/>\n      A scheduler definition contains information about what event is sent,\n      when, and under what identity.\n      <p/>\n      For instance :\n      <code>\n        <schedule id=\"mySchedule\" jobFactoryClass=\"org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory\">\n          <username>Administrator</username>\n          <event>myEvent</event>\n          <eventCategory>default</eventCategory>\n          <!-- Every first of the month at 3am -->\n          <cronExpression>0 0 3 1 * ?</cronExpression>\n          <timezone>UTC</timezone>\n        </schedule>\n      </code>\n      jobFactoryClass is optional and defaults to org.nuxeo.ecm.core.scheduler.DefaultEventJobFactory.\n      timezone is optional and defaults to system default.\n\n      @see org.quartz.CronTrigger\n      @see org.nuxeo.ecm.core.scheduler.EventJobFactory\n      @see http://www.quartz-scheduler.org/docs/api/1.8.1/org/quartz/CronExpression.html\n      @see http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html\n    </documentation>\n\n    <object class=\"org.nuxeo.ecm.core.scheduler.ScheduleImpl\"/>\n\n  </extension-point>\n\n  <extension target=\"org.nuxeo.runtime.ConfigurationService\" point=\"configuration\">\n    <documentation>\n      Delay Quartz scheduler start to avoid unique key constraint violation with qrtz_LOCKS table\n      <p />\n      Default behavior is to delay for 5 seconds.\n\n      @since 2021.19\n    </documentation>\n    <property name=\"org.nuxeo.scheduler.start.delay\">5s</property>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/scheduler-service.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-core-event-2021.62.7.jar",
      "groupId": "org.nuxeo.ecm.core",
      "hierarchyPath": "/grp:org.nuxeo.ecm.core/org.nuxeo.ecm.core.event",
      "id": "org.nuxeo.ecm.core.event",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: 1.6.0_20 (Sun Microsystems Inc.)\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.24\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 5.4.2.qualifier\r\nExport-Package: org.nuxeo.ecm.core.event,org.nuxeo.ecm.core.event.impl\r\n ,org.nuxeo.ecm.core.event.jms;api=split,org.nuxeo.ecm.core.event.scri\r\n pt,org.nuxeo.ecm.core.event.tx,org.nuxeo.ecm.core.work,org.nuxeo.ecm.\r\n core.work.api\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Name: org.nuxeo.ecm.core.event\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.6\r\nImport-Package: javax.naming,javax.script,javax.security.auth.login,ja\r\n vax.transaction;version=\"1.1\",org.apache.commons.logging,org.nuxeo.co\r\n mmon.collections,org.nuxeo.common.utils,org.nuxeo.common.xmap.annotat\r\n ion,org.nuxeo.ecm.core;api=split,org.nuxeo.ecm.core.api;api=split,org\r\n .nuxeo.ecm.core.api.impl,org.nuxeo.ecm.core.api.model,org.nuxeo.ecm.c\r\n ore.api.repository,org.nuxeo.ecm.core.api.security,org.nuxeo.ecm.core\r\n .schema,org.nuxeo.runtime.api,org.nuxeo.runtime.model,org.nuxeo.runti\r\n me.transaction,org.osgi.framework;version=\"1.4\",org.nuxeo.common,org.\r\n nuxeo.runtime,com.codahale.metrics\r\nBundle-SymbolicName: org.nuxeo.ecm.core.event;singleton:=true\r\nNuxeo-Component: OSGI-INF/EventService.xml,OSGI-INF/workmanager-servic\r\n e.xml,OSGI-INF/workmanager-config.xml,OSGI-INF/scheduler-service.xml\r\n\r\n",
      "maxResolutionOrder": 807,
      "minResolutionOrder": 144,
      "packages": [],
      "requirements": [],
      "version": "2021.62.7"
    }
  ],
  "creationDate": 1730823086020,
  "key": "Nuxeo Platform-2021.62",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1730823086020,
  "version": "2021.62"
}